#!/bin/bash

# Variables -------------------------------------------------------
SCRIPT_FN=$(basename $(readlink -f ${BASH_SOURCE[0]}))
SCRIPT_DP=$(readlink -f $(dirname ${BASH_SOURCE[0]}))

# Fonctions -------------------------------------------------------

# -----------------------------------------------------------------
# COMMENT
# -----------------------------------------------------------------

# Authentification et appels de base sur le broker IG

# -----------------------------------------------------------------
# PREREQUISITE
# -----------------------------------------------------------------

#apt-get curl
#apt-get jq
#apt-get sed


# -----------------------------------------------------------------
# VAR
# -----------------------------------------------------------------

IG_APIKEY=xxxxxxxxxx # (APIKEY  raliser sur votre espace IG)
IG_IDENTIFIER=yyyyyyyyyyy #(votre login IG)
IG_PASSWORD=zzzzzzzzzzz #(votre password IG)

# -----------------------------------------------------------------
# MAIN
# -----------------------------------------------------------------

echo "------------------------------------------------------------"
echo "session"
echo "------------------------------------------------------------"

WS_SESSION=https://api.ig.com/gateway/deal/session

curl -v \
  -H "Accept: application/json; charset=UTF-8" \
  -H "Content-Type: application/json; charset=UTF-8" \
  -H "X-IG-API-KEY: ${IG_APIKEY}" \
  -H "Version: 2"  \
  -d "{\"identifier\":\"${IG_IDENTIFIER}\", \"password\":\"${IG_PASSWORD}\", \"encryptedPassword\": null }" \
  ${WS_SESSION} \
  -o ouput_session.txt \
  -D headers_session.txt

# Retrieve values
BALANCE=$(jq .accountInfo.balance ouput_session.txt)
X_SECURITY_TOKEN=$(grep "X-SECURITY-TOKEN:" headers_session.txt  | sed 's/^.*: //')
CST=$(grep "CST:" headers_session.txt  | sed 's/^.*: //')

echo "---"
echo "BALANCE=${BALANCE}"
echo "X_SECURITY_TOKEN=${X_SECURITY_TOKEN}"
echo "CST=${CST}"

echo "------------------------------------------------------------"
echo "search"
echo "------------------------------------------------------------"


# WS_MARKET_SEARCH=https://api.ig.com/gateway/deal/markets?searchTerm=
# SEARCHTERM=DAX
# 
# curl -v \
#   -H "Accept: application/json; charset=UTF-8" \
#   -H "Content-Type: application/json; charset=UTF-8" \
#   -H "X-IG-API-KEY: ${IG_APIKEY}" \
#   -H "X-SECURITY-TOKEN: ${X_SECURITY_TOKEN}" \
#   -H "CST: ${CST}" \
#   -H "Version: 1"  \
#   -o ouput_search_market.txt \
#   ${WS_MARKET_SEARCH}${SEARCHTERM}

# Retrieve epic from Result
#jq -r '.markets[].epic' ouput_search_market.txt

# Retrieve epic/instrumentName from Result
# jq -r '.markets[] | "\(.epic) - \(.instrumentName)"' ouput_search_market.txt


# Result of 'DAX' search
# "EC.D.DAXFP.CASH.IP - Lyxor DAX (DR) UCITS ETF - Acc"
# "IX.D.DAX.IFMM.IP - Allemagne 40 au comptant (1)"
# "IX.D.DAX.IDF.IP - Allemagne 40 au comptant (25)"
# "IX.D.DAX.IMF.IP - Allemagne 40 au comptant (5)"
# "IX.D.DAX.FWS2.IP - Allemagne 40 (25)"
# "IX.D.DAX.FWM2.IP - Allemagne 40 (5)"
# "KA.D.DES2.CASH.IP - L&G DAX(r) Daily 2x Short UCITS ETF - EUR (LSE)"
# "ED.D.DAXEX.CASH.IP - ISHARES DAX DE"
# "SI.D.DXRUS.CASH.IP - Daxor Corporation"
# "IX.D.SUNDAX.IFMM.IP - Allemagne 40 au comptant  Weekend (1)"
# "IX.D.SUNDAX.IDF.IP - Allemagne 40 au comptant  Weekend (25)"
# "IX.D.SUNDAX.IMF.IP - Allemagne 40 au comptant  Weekend (5)"
# "KA.D.CG1LN.CASH.IP - Amundi ETF DAX UCITS ETF DR"
# "ED.D.E901GY.CASH.IP - ComStage 1 Dax UCITS ETF"
# "ED.D.CBDAXGY.CASH.IP - ComStage ETF DAX TR UCITS ETF"
# "ED.D.GY3SGY.CASH.IP - ETFS 3x Daily Short DAX 30"
# "KA.D.DEL2LN.CASH.IP - L&G DAX(r) Daily 2x Long UCITS ETF"
# "KA.D.DL2PLN.CASH.IP - L&G DAX(r) Daily 2x Long UCITS ETF"
# "ED.D.E909GY.CASH.IP - Lyxor 1 DAX 50 ESG DR UCITS ETF"
# "KA.D.DAXXLN.CASH.IP - Lyxor DAX (DR) UCITS ETF - Acc"
# "KA.D.3DELLN.CASH.IP - WisdomTree DAX 30 3x Daily Lev"
# "KA.D.3LDELN.CASH.IP - WisdomTree DAX 30 3x Daily Lev"
# "KA.D.3SDELN.CASH.IP - WisdomTree DAX 30 3x Daily Sho"
# "KA.D.3DESLN.CASH.IP - WisdomTree DAX 30 3x Daily Sho"
# "KA.D.XDDXLN.CASH.IP - Xtrackers DAX ESG Screened"
# "ED.D.XDAXGY.CASH.IP - Xtrackers DAX UCITS ETF 1C"
# "ED.D.DES2GY.CASH.IP - ETFS DAX Daily 2x Short GO UCITS - XETRA"
# "KA.D.DS2PLN.CASH.IP - L&G DAX(r) Daily 2x Short UCITS ETF - GBp"

echo "------------------------------------------------------------"
echo "market/xxx"
echo "------------------------------------------------------------"

WS_MARKET_EPIC=https://api.ig.com/gateway/deal/markets/
EPIC=IX.D.DAX.IFMM.IP

curl -v \
  -H "Accept: application/json; charset=UTF-8" \
  -H "Content-Type: application/json; charset=UTF-8" \
  -H "X-IG-API-KEY: ${IG_APIKEY}" \
  -H "X-SECURITY-TOKEN: ${X_SECURITY_TOKEN}" \
  -H "CST: ${CST}" \
  -H "Version: 1"  \
  -o ouput_market_${EPIC}.txt \
  ${WS_MARKET_EPIC}${EPIC}

marketinfo=$(jq -r --arg CURDATE "$(date +%d/%m/%Y)" '"\(.instrument.epic);\(.instrument.name);\(.dealingRules.minStepDistance.value);\(.dealingRules.minDealSize.value);\(.dealingRules.minNormalStopOrLimitDistance.value);\(.snapshot.updateTime);\(.snapshot.bid);\(.snapshot.offer);\($CURDATE)"' ouput_market_${EPIC}.txt)

echo $marketinfo


echo "------------------------------------------------------------"
echo "market/xxx (ITERATE AND STORE)"
echo "------------------------------------------------------------"

WS_MARKET_EPIC=https://api.ig.com/gateway/deal/markets/

EPIC_ARRAY+=("IX.D.DAX.IFMM.IP")   # - Allemagne 40 au comptant (1)
EPIC_ARRAY+=("IX.D.CAC.IMF.IP")    # - France 40 au comptant (1)
EPIC_ARRAY+=("IX.D.DOW.IFE.IP")    # - Wall Street au comptant (1)
EPIC_ARRAY+=("IX.D.NASDAQ.IFE.IP") # - US Tech 100 au comptant (1)
EPIC_ARRAY+=("IX.D.NIKKEI.IFM.IP") # - Japon 225 au comptant (1$)
EPIC_ARRAY+=("IX.D.IBEX.IFM.IP")   # - Espagne 35 au comptant (2)
EPIC_ARRAY+=("IX.D.STXE.IFM.IP")   # - EU Stocks 50 au comptant (2)


for EPIC in "${EPIC_ARRAY[@]}"
do

echo "-- $EPIC --"
curl -v \
  -H "Accept: application/json; charset=UTF-8" \
  -H "Content-Type: application/json; charset=UTF-8" \
  -H "X-IG-API-KEY: ${IG_APIKEY}" \
  -H "X-SECURITY-TOKEN: ${X_SECURITY_TOKEN}" \
  -H "CST: ${CST}" \
  -H "Version: 1"  \
  -o ouput_market_${EPIC}.txt \
  ${WS_MARKET_EPIC}${EPIC}

marketinfo=$(jq -r --arg CURDATE "$(date +%d/%m/%Y)" '"\(.instrument.epic);\(.instrument.name);\(.dealingRules.minStepDistance.value);\(.dealingRules.minDealSize.value);\(.dealingRules.minNormalStopOrLimitDistance.value);\(.snapshot.bid);\(.snapshot.offer);\($CURDATE);\(.snapshot.updateTime)"' ouput_market_${EPIC}.txt)

# store
echo $marketinfo >> $SCRIPT_DP/results.csv

done




# -----------------------------------------------------------------
# ANNEXES
# -----------------------------------------------------------------


# https://daniel.haxx.se/blog/2022/03/24/easier-header-picking-with-curl/

# https://labs.ig.com/rest-trading-api-guide
# https://labs.ig.com/rest-trading-api-reference
# https://labs.ig.com/rest-api-guide-example-requests


